package com.Callable;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class Demo {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
//        获取线程中的call方法
//        Callable接口没有实现Runnable接口，故不能直接作为线程参数传入，需要通过中间件的帮助
        MyThread myThread = new MyThread();
//        通过中间媒介创建线程,FutureTask实现了Runnable接口Future接口
        FutureTask<String> futureTask = new FutureTask<>(myThread);
//        获取线程
        Thread thread = new Thread(futureTask);
//        不可以在线程还未开始前就获取结果，因为结果是在线程完成之后才能获取的，但是线程还未开启就去获取线程会造成阻塞的状态
//                String s = futureTask.get();
        thread.start();
//        获取线程返回结果，
        String s = futureTask.get();
        System.out.println(s);
    }
}
